<?php
class main extends spController
{
	function index(){ // 这里是首页
		$this->tpl_title = "控制面板";
		$this->display("admin/main_index.html");
	}
	
	// 退出登录
	public function logout(){
		// 这里是PHP.net关于删除SESSION的方法
		$_SESSION = array();
		if (isset($_COOKIE[session_name()])) {setcookie(session_name(), '', time()-42000, '/');}
		session_destroy();
		// 跳转回首页
		$this->success("已退出，返回首页！", spUrl("main","login"));
	}

	// 显示用户登录框以及验证用户登录情况
	public function login(){
		$this->tpl_title = "用户登录";
		$this->formUrl = spUrl("main", "login");
		import("spAcl.php"); // 引入Acl文件，使得可以生成加密的密码输入框
		if( $name = $this->spArgs("name") ){ // 已经提交，这里开始进行登录验证
		$pass = $this->spArgs("password"); // 密码是否为空
		if($pass == ""){
			$this->error("请输入密码！", spUrl("main","login"));
		}
		$password = spClass('md5password')->pwvalue();// 通过acl的pwvalue获取提交的加密密码
			// 使用spVerifier进行第一次检查
			$rows = array('name' => $name, 'password' => password);
			$userObj = spClass("lib_users"); // 实例化lib_users类
			$userObj->verifier = $userObj->verifier_login; // 切换验证规则
			$results = $userObj->spVerifier($rows);
			if( false == $results ){ // 当spVerifier返回false的时候，则是表示已经通过验证，数据是合格的
				// 使用lib_users类中我们新建的userlogin方法来验证用户名和密码
				if( false == $userObj->userlogin($name, $password) ){
					// 登录失败，提示后跳转回登录页面
					$this->error("用户名/密码错误，请重新输入！", spUrl("main","login"));
				}else{
					// 成功登录，跳转。这里要进行判断一下：
					// 如果用户角色是administrator（管理员）则跳转到admin/index的管理中心
					// 如果用户角色是visitors（普通会员）则跳转回首页
					$useracl = spClass("spAcl")->get(); // 通过acl的get可以获取到当前用户的角色标识
					if( "administrator" == $useracl ){
					//获取用户活动信息
					$logintime = spClass("lib_users");
					$uid = $_SESSION["userinfo"]["uid"];
					$conditions = array("uid"=>$uid); 
					$logged = $logintime->find($conditions); // 查找activated是否为空

					if ($logged['activated']!=""){
						$newrow = array(
						'logged' => mktime(),
						);
					}else{
						$newrow = array(
						'activated' => mktime(),
						'logged' => mktime(),	
						);						
					}

					$logintime->update($conditions, $newrow); // 更新记录
					$this->success("登录成功，欢迎您，管理员！", spUrl("main","index"));
					}else{
						$this->success("登录成功，欢迎您，尊敬的会员！", spUrl("main","index"));
					}
				}
			}else{
				// $results不是false，所以没有通过验证，错误信息是$results
				foreach($results as $item){ // 开始循环错误信息的规则，这里只有用户名
					// 每一个规则，都有可能返回多个错误信息，所以这里我们也循环$item来获取多个信息
					foreach($item as $msg){ 
						// 虽然我们使用了循环，但是这里我们只需要第一条出错信息就行。
						// 所以取到了第一条错误信息的时候，我们使用$this->error来提示并跳转
						$this->error($msg,spUrl("main","login"));
					}
				}
			}
		}
		$this->display("admin/main_login.html");
	} 
	
	//清除smarty缓存
	function clear(){
		$smarty=$this->getView();
		$smarty->clear_all_cache();
		$url=spUrl('main','index');
		$this->success('操作成功！',$url);
	}

}	